package com.dmz.insclient.utils;

import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.*;

/**
 * @author lee
 */
public class StringUtil {


	public static String lpadString(String strSrc,int len,String strpad){
		String temp="";
		int padding=len-getbyteLength(strSrc);
		if(padding<0){
			byte[] bytesrc=strSrc.getBytes();
			byte[] substr=new byte[len];
			for(int i=0;i<len;i++){
				substr[i]=bytesrc[i];
			}
			return new String(substr);
		}
		if(padding>0){
			for(int k=0;k<padding;k++){
				temp += strpad;
			}
			return temp+strSrc;
		}
		return strSrc;
		
	}
	public static int getbyteLength(String strSrc) {
		// TODO Auto-generated method stub
		int len = 0;
		for(int i=0;i<strSrc.length();i++){
			char c = strSrc.charAt(i);
			int hightByte=c >>> 8;
			len += hightByte==0?1:2;
		}
		return len;
	}
	public static Date getMonthDate(Date StartDate,int month){
		LocalDateTime localtime=StartDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime().plusMonths(month);
		Date date = Date.from(localtime.atZone(ZoneId.systemDefault()).toInstant());
		return date;
	}
	
	public static List<String> getMonths(String startMath,String endMath){
		try {
			Date d1= new SimpleDateFormat("yyyyMM").parse(startMath);
			Date d2= new SimpleDateFormat("yyyyMM").parse(endMath);
			Calendar cid=Calendar.getInstance();
			cid.setTime(d1);
			List<String> list = new ArrayList<>();
			while(cid.getTime().before(d2)){
				SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
				String str = sdf.format(cid.getTime());
				list.add(str);
				cid.add(Calendar.MONTH, 1);
			}
			return list;
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return null;
		
	}
	public static String yihuo(String str){
		if(str.contains(".")){
			String num = str.substring(0,str.indexOf("."));
			int num1=Integer.parseInt(num)^20211001;
			return num1+str.substring(str.indexOf("."));
		}else{
			int num2=Integer.parseInt(str)^20211001;
			return Integer.toString(num2);
		}
	}

}
